package com.qding.park.manager.service.statis.mapper;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.qding.park.manager.pojo.TbCar;
import com.qding.park.manager.pojo.TbUserInfo;
import com.qding.park.manager.pojo.enums.UserTypeEnum;
import com.qding.park.manager.pojo.example.HisExample;

/**
 * @ClassName TbUserInfoMapper
 * @Description TODO(用户信息表)
 * @author Administrator
 * @Date 2016年8月25日 下午3:10:41
 * @version 1.0.0
 */
public interface TbUserInfoStatisMapper {
	
	/**
	 * @Description (根据北京用户id查询用户信息)
	 * @param bjUserId
	 * @return
	 */
	TbUserInfo queryUserByBjUserId(@Param("bjCode")String bjUserId);
	
	TbUserInfo queryUserById(@Param("userId")int userId);
	
	List<HisExample.OtherUser> otherHisExample(@Param("userId")int userId);
	
	/**
	  * update(更新)
	  * @Title: update
	  * @Description: TODO
	  * @param @param tbUserInfo
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	int update(TbUserInfo tbUserInfo);
	
	int updateNotuserType(TbUserInfo tbUserInfo);
	
	int updateUserTypeBytel(@Param("tel")long tel,@Param("userType")int userType);
	
	int updataTelBybjuserid(@Param("tel")long phone,@Param("bjCode")String  bjuserid);
	
	int updateUserType(@Param("bjCode")String  bjuserid,@Param("userType")int userType);
	
	/**
	  * userInfoById(根据id 查询用户信息)
	  *
	  * @Title: userInfoById
	  * @Description: TODO
	  * @param @param userId
	  * @param @return    设定文件
	  * @return TbUserInfo    返回类型
	  * @throws
	  */
	TbUserInfo userInfoById(@Param("userId")int userId);
	
	List<TbUserInfo>  queryUserByBjUserIdPhone(@Param("userId")String bjuserId,@Param("phone") long phone);
	
	int updataTel(@Param("phone")long phone,@Param("bjcode")String bjuserId,@Param("userType")int userType);
	
	int queryNumByPhoneNotBjuserid(@Param("bjuserid") String bjuserid,@Param("phone") long phone);
	
	
	
	/**
	 * @Description (根据手机号查询用户信息并且更新 北京用户id)
	 * @param bjuserid
	 * @param phone
	 * @return
	 */
	int updateBjuseridByPhone(@Param("bjuserid") String bjuserid,@Param("phone") long phone);
	
	
	/**
	  * batchUpdateByid(批量更新用户对象)
	  * TODO(这里描述这个方法适用条件 – 可选)
	  * TODO(这里描述这个方法的执行流程 – 可选)
	  * TODO(这里描述这个方法的使用方法 – 可选)
	  * TODO(这里描述这个方法的注意事项 – 可选)
	  *
	  * @Title: batchUpdateByid
	  * @Description: TODO
	  * @param @param userList
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	
	
	int batchUpdateByid(@Param("list")List<TbUserInfo> userList);
	
	
	/**
	  * batchInsert(不存插入)
	  * TODO(这里描述这个方法适用条件 – 可选)
	  * TODO(这里描述这个方法的执行流程 – 可选)
	  * TODO(这里描述这个方法的使用方法 – 可选)
	  * TODO(这里描述这个方法的注意事项 – 可选)
	  *
	  * @Title: batchInsert
	  * @Description: TODO
	  * @param @param userList
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	
	
	int insertnotExistis(TbUserInfo user);
	
	
	int batchInsert(@Param("list")List<TbUserInfo> userlist);
	
	
	/**
	  * queryUserByTel(根据手机手机号查询 用户信息)
	  * TODO(这里描述这个方法适用条件 – 可选)
	  * TODO(这里描述这个方法的执行流程 – 可选)
	  * TODO(这里描述这个方法的使用方法 – 可选)
	  * TODO(这里描述这个方法的注意事项 – 可选)
	  *
	  * @Title: queryUserByTel
	  * @Description: TODO
	  * @param @param tel
	  * @param @return    设定文件
	  * @return TbUserInfo    返回类型
	  * @throws
	  */
	
	
	TbUserInfo queryUserByTel(long tel);
	
	
	
	/**
	  * queryUseByPhoneType(根据 手机号，用户类型 查询用户信息)
	  *
	  * @Title: queryUseByPhoneType
	  * @Description: TODO
	  * @param @param phone
	  * @param @param userType
	  * @param @return    设定文件
	  * @return TbUserInfo    返回类型
	  * @throws
	  */
	TbUserInfo queryUseByPhoneType(@Param("phone")long phone,@Param("userType")int userType);
	
	
	/**
	 * @Description (TODO北京code userType 查找用户)
	 * @param bjcode
	 * @param userType
	 * @return
	 */
	TbUserInfo queryUseByBjuseridType(@Param("bjcode")String  bjcode,@Param("userType")int userType);
	
	
	/**
	  * save(保存)
	  * TODO(这里描述这个方法适用条件 – 可选)
	  * TODO(这里描述这个方法的执行流程 – 可选)
	  * TODO(这里描述这个方法的使用方法 – 可选)
	  * TODO(这里描述这个方法的注意事项 – 可选)
	  *
	  * @Title: save
	  * @Description: TODO
	  * @param @param user
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	
	
	int save(TbUserInfo user);
	
	/**
	  * updateExpiredTime(更新用户车辆的到期时间)
	  * TODO(这里描述这个方法适用条件 – 可选)
	  * TODO(这里描述这个方法的执行流程 – 可选)
	  * TODO(这里描述这个方法的使用方法 – 可选)
	  * TODO(这里描述这个方法的注意事项 – 可选)
	  *
	  * @Title: updateExpiredTime
	  * @Description: TODO
	  * @param @param userId
	  * @param @param expiredTime
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	
	
	int updateExpiredTime(@Param("userId")int userId,@Param("expiredTime")Date expiredTime);
}
